package com.common.boot.util;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.util.List;

public class JsoupDemo {

/*    public static void main(String[] args) throws IOException {

        Document doc = Jsoup.connect("https://orcid.org/orcid-search/search?searchQuery=0000-0002-1825-0097").get();
//        log(doc.title());
        Elements newsHeadlines = doc.select("#mp-itn b a");
        for (Element headline : newsHeadlines) {
            System.out.println("==============="+ headline.attr("title")+"============"+headline.absUrl("href"));
        }
    }*/
public static void main(String[] args) throws InterruptedException {
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--headless");
    // 指定chromedriver的路径
    System.setProperty("webdriver.chrome.driver", "E:\\hbx\\chromedriver\\chromedriver.exe");
    WebDriver driver = new ChromeDriver(options);
    driver.get("https://orcid.org/0000-0002-1825-0097");  // 打开网页
    Thread.sleep(3000);   // 等待网页的JavaScript代码加载完毕
    String pageSource;    // 保存获取到的网页源代码
    Document document;    // 网页源代码解析为 DOM 对象
    List<WebElement> elements;   // 保存获取到的当前页的数据表（包含10条数据）
    WebElement btn_next;         // 保存获取到的 “点击跳转下一页” 按钮

    // 完整页（每页10条数据）
    for (int i = 0; i < 2213; i++) {
        pageSource = driver.getPageSource();        // 获取网页源代码
        document = Jsoup.parse(pageSource);         // 使用Jsoup解析整个网页的源代码
        Elements items = document.getElementsByClass("el-table__row");
        for (int j = 0; j < 10; j++) {
            Elements cells = items.get(j).getElementsByClass("cell");
        }

        elements = driver.findElements(By.className("btn-next"));
        btn_next = elements.get(1);  // 共获取到两个同名按钮，第二个按钮为目标按钮
        // btn_next.click();   // 直接点击获取到的按钮，可能会出现弹窗导致无法正常点击等异常
        JavascriptExecutor executor = (JavascriptExecutor) driver;
        executor.executeScript("arguments[0].click();", btn_next);  // 使用原生 JS 执行点击按钮操作
        Thread.sleep(2500);
    }

    // 最后一页（不足10条数据）
    pageSource = driver.getPageSource();
    document = Jsoup.parse(pageSource);         //使用Jsoup解析整个网页的源代码
    Elements items = document.getElementsByClass("el-table__row");
    for (int j = 0; j < 4; j++) {
        Elements cells = items.get(j).getElementsByClass("cell");
    }
    driver.quit();
}
}
